# 内置函数
abs(-20)
max(1,3,10,-2)
hex(20)

# 定义函数
# 使用def定义函数
def plus(a, b):
    return a + b
print(plus(10, 20))
    
# 使用pass语句定义空函数
def nop():
    pass

# 参数类型检查，使用isinstance()做检查
def my_abs(x):
    if not isinstance(x, (int, float)):
        raise TypeError('错误的参数类型')
    print('正确执行')
# my_abs('cc')

# 返回多个值, 其实返回的是一个tuple
import math
def move(x, y, step, angle):
    nx = x + step * math.cos(angle)
    ny = y + step * math.sin(angle)
    return nx, ny
x, y = move(10,20, 2, 30)
print('x = %f, y = %f' % (x, y))

# 练习
'''
请定义一个函数quadratic(a, b, c)，接收3个参数，返回一元二次方程：
ax2 + bx + c = 0的两个解
提示： 计算平方根可以调用math.sqrt()函数
'''
def quadratic(a,b,c):
    delt = b**2-4*a*c
    if a > 0:
        s1 = (-b + math.sqrt(delt))/(2*a)
        s2 = (-b - math.sqrt(delt))/(2*a)
        return s1, s2
    else:
        return

print('quadratic(2, 3, 1) =', quadratic(2, 3, 1))
print('quadratic(1, 3, -4) =', quadratic(1, 3, -4))

if quadratic(2, 3, 1) != (-0.5, -1.0):
    print('测试失败')
elif quadratic(1, 3, -4) != (1.0, -4.0):
    print('测试失败')
else:
    print('测试成功')